約 1,270,415 件
https://w.atwiki.jp/taichik15/pages/55.html
演算子 全てのメソッドは演算子 Scalaのメソッドは演算子のように使える 例えば、 1 + 2 は、 1.+(2) と同じ 右被演算子 メソッド名の末尾がコロン( )の場合は右被演算子から呼ばれる 例えば、 1 2 Nil は、 Nil. ( 2 ). ( 1 ) と同じ apply, update applyとupdateは、シンタックスシュガーが用意されている 例えば、 a.apply(b) は、 a(b) と同じで、 a.update(b, c) は、 a(b) = c と同じ。 前置演算子 !pのように演算子が変数の前にくる演算子。 !は、 unary_! のように定義されている。 前置演算子として使えるのは、 +, -, !, ~ のみ。
https://w.atwiki.jp/stgbuilder/pages/459.html
(物理演算) 物体の重力設定 物体の衝突判定 物理エンジンによる当たり判定と、通常の攻撃防御判定の関係 まったく別のシステムとして動作。 同じサイズの当たり判定を用意しても、片方のみヒットすることがある。 攻撃ヒットタスクで、即消滅させると物理演算の判定ができない可能性がある。 回避するには、攻撃ヒットタスクで攻撃フラグを落とし、1フレームウエイト後に消滅させる。 攻撃フラグを落とすのと同時に表示を消せば、物理演算により1フレームだけ角度が変化した絵が表示されることを防げる。 現状での制約(v0.99.77) 親の座標に同期する子は、物理演算できない プレイヤーやオプションは、物理演算できない スクロールに同期しているキャラクタは、動いてないように見えるが動いている。 そのため、垂直に積み上げたキャラクタが崩れることがある。 背景に形状を割り当てることはできないため、1個ずつ手作業でキャラクタとして配置する必要あり。 めり込みやすり抜けは完全に抑制できない。 キャラクタがまれに異常な速度になることある。 将来の展望 複雑な形状の追加 ジョイントやロープといった多彩な物体の追加 背景との連携 演算できないキャラクタへの演算拡張 など 物理演算 物体の種類 完全物理演算モード フォースとインパルス 重力と重力影響度 密度との関係 反発係数 グループ番号とマスクビット・カテゴリビット ゲーム設定>>ゲーム設定 物理演算 キャラクタ編集>>物理演算 タブ スクリプト編集>>物理演算パネル>>重力,パラメータ,フォース,インパルス,トルク MMEのようなパーティクル・フィジックスがあれば・・・エフェクト編集の代わりになるのに -- 名無しさん (2012-05-22 00 52 07) 重力設定を、加速度設定として、画面に対する方向で指定する方法と、特定キャラクタを指定する方法があれば面白い ①画面に対する方向を指定できれば、重力の方向を自由に設定できる ②特定キャラクタを1個指定できれば、そのキャラクタを中心に旋回する円軌道ができる ③特定キャラクタを2個指定できれば、その2個のキャラクタを焦点にして旋回する楕円軌道ができる -- ルーピー (2012-06-22 23 30 02) バネの弾性力や糸の張力、電磁気力みたいな遠隔的な引力・斥力も欲しいな 浮力や空気抵抗、流体とかも実現できたらスゴイ -- 名無しさん (2012-06-23 17 38 51) static:動かずに、他キャラクタに影響を与える kinematic(力に反応しない動く物体):動いて、他キャラクタに影響を与えるが、影響は受けない dynamic(通常の動く物体):動いて、他キャラクタに影響を与え、影響を受ける 影響は受けるけど、影響は与えないって物体はないの?? -- 名無しさん (2012-06-24 10 57 04) 糸:一定の長さで、一定の力を発揮する 一定の長さ以上にはならず、一定の長さ以下になるとたわんで力を発揮しなくなる →円運動や振り子運動へ バネ:一定の長さ(自然長)では力0で、それより短くなったり、長くなったりすると、変位に比例した復元力(弾性力)を発揮する 一定の長さ以下、長さ以上になると、弾性力を失う(降伏点) →伸びるバネ、縮むバネの運動へ 磁石:同極には引力、異極には斥力を及ぼし、遠隔にも作用するが、距離の2乗に反比例して弱くなる →磁力や静電気力、引力へ -- 名無しさん (2012-06-24 11 04 43) 名前 コメント
https://w.atwiki.jp/learninghaskell/pages/15.html
リストの生成 a = [2, 4, 6, 8, 10] レンジ レンジ表記を使うと、等差数列程度であれば簡単に定義することができる。 ghci [1..5] [1, 2, 3, 4, 5] ghci [ a .. c ] "abc" ghci [1, 3..10] [1, 3, 5, 7, 9] レンジを使えば無限リストも作れる。Haskellには遅延評価の仕組みがあるので、無限リストの要素が必要になった時に初めて評価される。 ghci [1, 2..] cycle, repeat, replicate 上記関数は、繰り返しを含むリストの定義に使われる。 ghci cycle [1, 2, 3] [1, 2, 3, 1, 2, 3, .....] ghci repeat 3 [3, 3, 3, 3, ....] ghci replicate 3 10 [10, 10, 10] リストの連結 ++演算子 上記演算子で2つのリストを結合できる ghci [1, 2, 3] ++ [4, 5, 6] [1, 2, 3, 4, 5, 6] 演算子 上記演算子で先頭に要素を追加できる ghci 1 [2, 3, 4, 5] [1, 2, 3, 4, 5] リスト要素へのアクセス !!演算子 上記演算子で、インデックスを使用して要素にアクセスできる。 ghci [1, 3, 5, 7, 9] !! 3 5 リストの比較 数値と同様に、等号や不等号を用いて比較判定ができる。不等号は辞書順を基準に判定する。 文字列の長さ ***length関数 ghci length [2, 4, 6, 8, 10] 5 要素、部分リストの抽出 head, tail, init, last 上記演算子はよく使われるリスト関数で、以下のように要素または部分リストを抽出できる([1, 2, 3, 4, 5]に対して適用)。 head 1 tail [2, 3, 4, 5] init [1, 2, 3, 4] last 5 take, drop takeは先頭から指定した要素数のリストを取得し、dropは先頭から指定した要素数を除外したリストを取得する take 3 [1, 2, 3, 4, 5] [1, 2, 3] drop 3 [1, 2, 3, 4, 5] [4, 5] 反転 reverse関数 上記関数でリストの順番を入れ替えることができる 判定関数 null関数 上記演算子でリストが空かを調べられる ghci null [] True elem関数 上記演算子で要素がリストにあるかを調べられる。 慣例的に、中置演算子として使われることが多い ghci 4 `elem` [2, 4, 6, 8] True 最大値、最小値 maximum, minimum関数 上記関数で、リスト内の最大値・最小値を抽出できる 要素全ての演算 sum, product 上記演算子で、リストの全ての要素を加算または乗算できる
https://w.atwiki.jp/futoyama/pages/63.html
四則演算は以下の expr コマンドを使う。 例 $ expr 3 + 1 -- expr 3+1 はだめ。数字と演算子の間はスペースが必要 4 $ expr 16 - 7 9 $ expr 18 / 9 2 $ expr 9 * 9 81 $ expr 17 % 4 1 括弧を使う場合はエスケープが必要。 $ expr 5 * \( 2 + 1 \) 15 bashであれば、「$((式))」で式を囲むと計算ができる。 「$((式))」だと式の結果はコマンドラインへの入力となるだけで、表示されないためechoコマンドで表示している。 $ echo -n $((3+1)) 4 $ echo -n $((16-7)) 9 $ echo -n $((18/9)) 2 $ echo -n $(( 9 * 9 )) -- (( )) の間にスペースを入れてもOK 81 $ echo -n $(( 17%4 )) 1 $ echo -n $((5*(2+1))) -- 式には括弧も使える。 15 計算結果を変数に入れて使いたい場合は、以下のようにする。 $ Var1=`expr 1 + 1` -- `(バッククォート)で囲む $ echo $Var1 2 $ Var2=$((1+3)) $ echo $Var2 4 「expr」だと、オペランドと演算子の間にスペースが必要だったり、優先を表す括弧もエスケープが必要だったりで使いにくいので、「$((式))」の方がよいですね。 名前 コメント
https://w.atwiki.jp/my-sql/pages/59.html
HOME 関数 数値関数 算術演算 算術演算 通常の算術演算子を利用することができます。注意 ‘-’、‘+’、‘*’ で、両方の引数が整数の場合、結果は BIGINT(64 ビット)の精度で計算されます。 どちらか一方の引数が符号なしの整数で、もう一方も整数の場合、結果は符合なしの整数になります。 + 加算 mysql SELECT 3+5; - 8 - 減算 mysql SELECT 3-5; - -2 * 乗算 mysql SELECT 3*5; - 15 mysql SELECT 18014398509481984*18014398509481984.0; - 324518553658426726783156020576256.0 mysql SELECT 18014398509481984*18014398509481984; - 0 最後の式の結果は正しくない。これは、この整数乗算の結果が BIGINT 計算の 64 ビットの範囲を超えるため。 / 除算 mysql SELECT 3/5; - 0.60 ゼロで割ると結果は NULL になる。 mysql SELECT 102/(1-1); - NULL 除算が BIGINT 演算で計算されるのは、結果が整数に変換されるコンテキストでその演算が実行された場合に限られる。
https://w.atwiki.jp/crsavrkouza/pages/50.html
4.基本演算 計算のため,各種演算子が用意されています.通常の四則演算はそのまま行えます.また,=で代入ができます. 記号 演算 書式 意味 + 加算 x + y xにyを加える. - 減算 x - y xからyを引く. * 乗算 x * y xにyを掛ける. / 除算 x / y xをyで割る. % 剰余算 x % y \xをyで割った余りを求める. = 代入 x = y xにyを代入する. 基本は通常の四則演算と同じですが,一部異なるところがあります. 例えば=は代入であるというところです.「等しい」ではありません.値をコピーして「等しくする」です, さらに,もしその結果が変数の表しうる範囲を超えていたら.オーバーフローして正常な結果は得られません. 演算に伴って型が変化することがあります. 整数 , 整数 → 整数 整数 , 実数 → 実数 実数 , 実数 → 実数 ここで注意するべきなのは,整数 / 整数 も整数であることです.つまり,商を求めるということです. 例 × 7 / 3 = 2.33333333・・・ 〇 7 / 3 = 2 注意しないと予期せぬ結果を生むことがあります. 例 ×7 / 3 * 3 = 7 〇7 / 3 * 3 = 6 7/3は商の2という結果を返します.それから3をかけると6になります. 同じ数で割ってから掛けても必ず元に戻るとは限りません.ただし,どちらかが実数であれば大丈夫です. 四則演算を使ったプログラムの例を示します. 例 2つの整数a, bを入力し, 和a + bを出力する #include stdio.h int main(void) { int a, b; printf("a = ");scanf("%d", a); printf("b = ");scanf("%d", b); printf("a + b = %d\n\r", a+b); return 0; } では,ここで一つプログラムを書いてもらいましょう 演習1 1つの整数を入力し,その桁数を出力する 演習2 2つの正整数n, mを入力し, nのm桁目の数字を出力する なお,累乗が必要になりますがそれは#include stdio.h の下に#include math.h を記述して 使用可能になるpow関数を使います.pow(a.b)でa^bが求められます.double型です. 期待される動作 n = 353; m = 2 nのm桁目は5です
https://w.atwiki.jp/tetdm/pages/19.html
ビット単位でデータを考える #include stdio.h main() { unsigned char x;//8ビットで符号なしデータ(0から255まで表現) x = 255;//8ビットが,すべて1 printf("x = %x\n",x);//16進数表示するので,4ビット毎に表示する } ビット毎に論理演算を行う {{{ ビットごとの論理積}}} {{{ | ビットごとの論理和}}} {{{ ^ ビットごとの排他的論理和}}} {{{ ~ 1の補数(否定)}}} 00000011 00000101 の論理積を計算する #include stdio.h main() { unsigned char x,y,z; x = 0x03;//00000011 y = 0x05;//00000101 z = x y; printf("z = %x\n",z); } 演習 全ての演算子について,演算の様子が分かるプログラムを作成する.
https://w.atwiki.jp/crsavrkouza/pages/51.html
6.ビット演算 2進数に特有の演算としてビット演算があります.論理演算とビットシフトに分けられます. bitごとに行う論理演算として,論理和OR, 論理積AND, 論理否定NOT, 排他的論理和XORがあります. 演算 記号 意味 OR | 一方,または両方が1なら1, 両方0なら0 AND 両方1なら1, 一方,または両方が0なら0 NOT ~ 0なら1,1なら0 XOR ^ 一方が1なら1,両方が1,または0なら0 演算の例を下に示します. OR|一方,または両方が1なら1, 両方0なら0 0 | 0 = 0 0 | 1 = 1 1 | 0 = 1 1 | 1 = 1 AND 両方1なら1, 一方,または両方が0なら0 0 0 = 0 0 1 = 0 1 0 = 0 1 1 = 1 NOT~0なら1, 1なら0 ~0 = 1 ~1 = 0 XOR^一方が1なら1, 両方が1,または0なら0 0 ^ 0 = 0 0 ^ 1 = 1 1 ^ 0 = 1 1 ^ 1 = 0 ビットシフトはビットが移動するものです.左辺のビット列を右辺の数の分だけ左右に移動させます. 新たに表れる部分は0になります. 演算 記号 例 左ビットシフト 0b11010111 3 = 0b10111000 右ビットシフト 0b10011100 2 = 0b00100111 これらはbitごとの操作をするときによく使います. PCでのプログラミングではそこまで使う機会は会いませんが,マイコンでは頻繁に使います.
https://w.atwiki.jp/perlrefs/pages/13.html
演算子 前項で突如出現した謎の記号=(イコール)。正体は悪の組織「演算子」の一味であることはわかったが、はてさて、悪の組織「演算子」とは一体どんな組織なのか… 次項には続かない。 「はよ進めんかい」 さて、謎の=という記号が「演算子」というものだということは、前項で既に説明したと思います。 では、演算子というものは、一体どんなものなのか、ということを、今回説明していきます。 「あー、悪の組織じゃないのねん」 「演算子」の「演算」というのは、聞いたことがあると思います。 計算するなどの意味ですね。 それに「子」という字が加わっただけです。 この場合の「子」という字には…まぁ、なんか意味があるんですけど、 「ちゃんと説明せぇよ」 まぁ、個人で調べていただけると…。 とにかく、演算子には、「計算する」なんていう意味があります。 計算をするためには、どんな記号を用いるでしょうか。 そうです、+や-もあります。 下記をご覧ください。 my $plus = 5 + 5; my $sub = 5 - 5; my $dev = 5 / 5; my $date = 5 * 5; これらの演算子は、算出演算子といい、足す引く掛ける割るなど、数字を計算するためにしようされます。
https://w.atwiki.jp/mugencns/pages/44.html
参考http //homotaro.s44.xrea.com/etc.htm 一部見づらい記号があります。注視。 ■演算子について MUGENで使うことのできる数式・条件式用の演算子について またTriggerの具体例を一部。 真偽について Triggerは「0以外(真)」か「0(偽)」で判定する。 条件式は基本的に条件が合ってれば1(真)を、合わなけれ0(偽)を返す。なおトリガー情報の形式によっては固有の演算を行うためそのままの状態で演算子を利用することはできない。例1:文字列を返すタイプ。Statetype = Enemy,StateTypeは不可。>T-/StateType 例2:固有の演算処理を行うタイプ。5 = AnimElemは不可。>T-/AnimElem 上記の情報でも条件式を()で囲えばその真偽の数値(1.0)に演算子を使うことはできる。例3:(MoveType=A)=(Enemy,Movetype=A) 計算と型について 数値にはInt型とFloat型とが存在する。 Int型は正数のみを扱え、Float型は小数を扱えるが桁が大きくなると細かいズレが生じる。Int型とInt型の計算はInt型、Float型とFloat型の計算はFloat型を返す。 Int型とFloat型での計算の場合、Float型が優先され、Float型になる。 使用出来る演算子 =,!=, , , =, = 等号・不等号 数値の比較数値情報と数値情報の間に挟み、左右の数値が等しいか・等しくないかを判定。「=」は左右の数値が等しいなら1(真)を、等しくないなら0(偽)を返す。 「!=」は左右の数値が等しくないなら1(真)を、等しいなら0(偽)を返す。 「 」は左が右より大きいなら1(真)、そうでないなら0(偽)を返す。 「 =」は左が右以上(同じを含む)なら1(真)、そうでないなら0(偽)を返す。 「 」は左が右より小さいなら1(真)、そうでないなら0(偽)を返す。 「 =」は左が右以下(同じを含む)なら1(真)、そうでないなら0(偽)を返す。 「!=, =, =」の=は右側。= ,= はエラーで落ちる。=!はエラーにならないが右をNOT処理する条件式になってしまう。 例:「 10!=9 」は真(1)だが、「 10=!9 」は(!9)=(0)で(10=0)の偽(0)となる。 +,-,*,/ 算術演算子 指定の計算をする+加算・-減算・*掛け算・/割り算のおなじみの数学記号。 数値情報と数値情報の間に挟むことで計算を行う。 割り算の右を「0」にしてはいけない。エラーが流れる。また、割り算は整数のみで行うと上手く処理されない場合がある。Int型とInt型同士の計算ではFloat型にならないため小数が切り捨てられる。 その場合左右の数値に*1.0などを入れFloat型にすると処理されるようになる。 なお「-マイナス」は数値情報の冒頭に記述でき、プラス(正数)をマイナス(負数)に・マイナスをプラスに変換する。 % 剰余 ※MUGEN独自記述・算術演算子「%」はMUGEN特有の演算子で、割り算の余りを返す。 10%5は余り0なので0を、14%4は余り2なので2を返す。 (xxx%10)と記述すれば1桁目のみを抽出できる。 対応は整数型の数値のみ。小数型の数値に使うとエラーで落ちるため注意。 ** 冪(べき)乗 ※MUGEN独自記述・算術演算子n乗算、のはずだが挙動がやや不安定のため基本使わないほうが良い。Int型同士の冪乗の場合、計算が一部安定しない。 整数同士かつ片方か両方を*1.0などでFloat型にすると計算が安定しやすい。ただしFloat型は7桁以上の数値になるとズレが生じるため要注意。 検証不足※小数単位の数値の冪乗も計算が不安定らしいが、詳しくは不明。 ※-Float型を入れた正数同士うまく計算が行かないケースはあるのか? !, ,||,^^ 論理演算子 条件が合っているかを確認する。「!」はNOT。付けた右の情報を0(偽)を1(真)に、0以外(真)を0(偽)に変換する符号。 「 」はAND。左右の情報が両方共0以外(真)だった場合のみ、1(真)を返す。 「||」はOR。左右の情報どちらかでも0以外(真)なら、1(真)を返す。 「^^」はXOR。左右の情報どちらか片方のみが0以外(真)なら、1(真)を返す。 ,|,^ ビット演算子 整数の値のbit情報で演算を行う。「 」はAND 「|」はOR 「^」はXOR説明はやや難しいのでbit演算のページを参照 補足・数値範囲指定 数値情報=(XX,XXX) (,)内の左数値より上・右数値未満の条件。 数値情報=[XX,XXX] [,]内の左数値以上・右数値以下の条件。「=」は「!=」(範囲内でない)でも良い。 ()と[]は組み合わせることが可能。[XX,XXX)や(XX,XXX]でも良い。 ただし直後に別の演算子を配置してはならない。「情報=[X,XX] 情報」などはエラーで落ちる。 直後に演算子を指定したい場合は「(情報=[X,XX]) 情報」と()で囲う必要がある。 ()の処理について ()で囲った場合、内部の優先順位を高め、個別に処理をする。数式を囲えばちゃんと数式の答えをまとめる。 条件式を囲った場合は真偽の数値(1.0)を数式に利用できる。例:130 + (Statetype=C) + 2*(Statetype=A)StateType=Cなら131,Aなら132、それ以外なら130になる式。 記述の優先度 Triggerは1行ごとに読み込みを行う。 基本的に左から右の順で計算を行うが優先度により処理は前後する。 上の方が優先順位が高い 同じ高さは記述時の読み込み基準。「 () 」:()内に書かれた式は優先される。()内部の順番は優先度に従う。 「 ! 」「 - 」:情報の手前に付ける符号 「 ** 」:n乗 「 * 」「 / 」「 % 」」: 「 + 」「 - 」: 「 」「 = 」「 」「 = 」: 「 = 」「 != 」: 「 = 」:※後述 「 」:(bit演算を =するときは注意) 「 ^ 」: 「 | 」: 「 」:論理演算子の順番には注意。 「 ^^ 」: 「 || 」:()が無ければ「 でまとめる→||でわける」の順番。 記述例 1 + 2 - 3 * 4:この数式は*が優先され3*4の12、その後1+2-12で-9となる。 (1 + 2 - 3)* 4:()で1+2-3を囲った場合、()内の計算が先で0*4となり0となる。 1 || 1 0:ではまず1 0が(0)、1||(0)は1なので、1(真)の記述。 (1 || 1) 0:だと()の比較が先で1||1が(1)だが、(1) 0なので、0(偽)の記述。 ■Lv1-具体例 基本的にCommonステートから参照 +■具体例 120番ステート(ガード始動) [State 120, 5]type = ChangeStatetrigger1 = AnimTime = 0value = 130 + (statetype = C) + (statetype = A)*2 条件式を()で囲うことで条件の1(真),0(偽)を計算に使う記述の代表例。 Statetype=Cなら+(1)で131、Statetype=Aなら+(1)*2で132へ、それ以外なら130へ飛ぶ計算である。 ちなみにAnimTime=0は「アニメ表示が一周した」という条件。よく使われる。 122番ステート(空中ガード待機) [State 132, 3]type = VarSettrigger1 = 1sysvar(0) = (pos y = 0) (vel y 0) パラメーターへ条件式をそのまま指定すると条件の1(真),0(偽)を指定できる。 Pos Y = 0は地面よりも下側、Vel Y 0は速度が下向き、の条件。 で繋げているので、その両方が1(真)なら1を、どちらかが0(偽)なら0を、sysvar(0)へ代入する。 5000番ステート(通常くらい) [State 5000, 5] ;State type gets set to aerial if getting hit uptype = StateTypeSettrigger1 = Time = 0trigger1 = GetHitVar(yvel) != 0 || GetHitVar(fall)trigger2 = Pos Y != 0statetype = a Trigger1は!Time(ステートに移った直後)で、GetHitVar()(受けた攻撃の情報)が yvel(縦のふっとばし速度)が0以外、あるいはfall(倒れ属性)の場合。 Trigger2は、Pos Y(縦の座標)が、地面(0)以外(!0)の場合。 どちらかが適合した場合、状態をStatetype=A、空中にするという命令。 ちなみに と||は、TriggerXと近い関係にあり、 それぞれを統合したり、分解したりすることもできる。 統合した例 [State 5000, 5]type = StateTypeSettrigger1 = Time = 0 ( GetHitVar(yvel) != 0 || GetHitVar(fall) ) || Pos Y != 0statetype = a 分解した例 [State 5000, 5]type = StateTypeSettrigger1 = Time = 0trigger1 = GetHitVar(yvel) != 0trigger2 = Time = 0trigger2 = GetHitVar(fall)trigger3 = Pos Y != 0statetype = a ただし条件式の統合・分解は分かりやすい・編集しやすい程度がいい。 上記の場合、統合すると一行が長すぎて分かりづらく、 分解も!Timeが2個もあり仮に編集するとき二箇所も変える必要が出てくる。 分かりやすい統合分解は後の編集も楽になるため意外と重要である。 5100番ステート(倒れ着地) [State 5100, 3] ;Hit ground anim (for hit up)type = ChangeAnimtrigger1 = time = 0trigger1 = (anim = [5051,5059]) || (anim = [5061,5069])trigger1 = SelfAnimExist(5100 + (anim % 10))value = 5100 + (anim % 10) 「%」の剰余計算を利用したアニメ変更処理。 概要としては特殊な吹っ飛び状態から倒れた場合、専用の倒れ着地モーションにする処理。 SelfAnimExist()の中に指定するAnimを指定し、しっかりと存在するかを確認。 もし存在しなければ別の記述で通常の倒れモーションを使用するようになっている。 5100番ステート(倒れ着地) [State 5100, 8]type = GameMakeAnimtrigger1 = Time = 1value = 60 + (sysvar(1) 5) + (sysvar(1) 14)pos = 0, 0under = sysvar(1) = 14 条件式in数式の例2。sysvar(1)は接地時点(!Time)のVel Yが入っている。 基本は60番のエフェクトを、(Under=1)キャラの後ろ側へ表示するが、 倒れ着地までの速度が5より大きかったら、61番のエフェクトを使用。 更に14より大きかったら、62番のエフェクトを(Under=0)手前側に表示。 ■Lv3-「 =]Var代入 +■Lv3-「 =」条件式内でVar代入を行う演算子 ※フォントの関係上「 」が見づらいです。 Lv3-「 =」条件式内でVar代入を行う演算子 「 =」を使うことで、条件式の中でVarSetを行うことができる。参照された場合のみ代入を行える。 Trigger1 = var(1) = 1 ;参照した際、var(1)に1を代入する。 なお論理演算子とbit演算子よりも優先度は上である。 もちろん演算子のため、文字列指定のパラメーターには使えない。0,1指定のタイプでもIgnorehitpauseなどは文字列指定タイプなので注意 Sysvar()とSysfvar()には使うことができない。var()とfvar()のみ。 数値情報としては代入した数値そのものとして扱う。Trigger1 =(var(2) = 0) (var(3) = 20) ;情報としては(0) (20)の扱い。 並べて用いるときは「1||」や「0 」を前に書くと管理しやすい。 なおPersistent=0設定は一度実行した後の読み込み自体を停止させるため、参照されない=「;=」代入も行われないので要注意。 記述の比較例 [State a]Type=varsetTrigger1=1var(5)=1[State a]Type=nullTrigger1=var(5) =1 上記の二つのステートコントローラーの処理は同一と言える。 どちらもVar(5)へ1を代入する記述である。 記述の注意点 [State a]Type=nullTrigger1=var(10) =1Trigger1=var(11) =0Trigger1=var(12) =5Trigger2=var(13) =10Trigger3=var(14) =500 こうした記述の場合var(12)とvar(14)の代入は行われない。 「 =」の注意点として代入は参照した時だけ行うことを忘れないこと。 [State a];内約解説Type=nullTrigger1=var(10) =1 ;○トリガー1・読み込み・真(0以外)なので次の同じ番号を参照Trigger1=var(11) =0 ;△トリガー1・読み込み・偽(0)なので同じ番号を参照せず、次の番号を参照。Trigger1=var(12) =5 ;×トリガー1・トリガー1で偽が出たので読み込まないTrigger2=var(13) =10;○トリガー2・トリガー1が読み込まれて偽が出たので読み込み。 ;真(0以外)だが、次の同じ番号がないので条件合致によりステートコントローラーを実行。Trigger3=var(14) =500;×トリガー3・トリガー2は読み込まれたが真で終わったので読み込まれず。 「 =」による代入を行う場合はこうした読み込みの条件と順番に注意しないといけない。 もし全ての行を参照させたい場合は以下のようにすること。 [State a];1||を入れることで条件を真にし、同じ番号を読み込ませ続ける。Type=nullTrigger1=1||var(10) =1Trigger1=1||var(11) =0Trigger1=1||var(12) =5Trigger1=1||var(13) =10Trigger1=1||var(14) =500;1||と同じ番号のTriggerを利用する方法[State a];0 を入れることで条件を偽にし、次の番号を読みこませる。Type=nullTrigger1=0 var(10) =1Trigger2=0 var(11) =0Trigger3=0 var(12) =5Trigger4=0 var(13) =10Trigger5=0 var(14) =500;0 と連続した番号のTriggerを利用する方法 上記のどちらも、全ての =によるVarSetを行う処理である。 計算式・条件式を交えて代入を行うばあいは、こうした調整をするのが基本。 なお行の順番が前後していても同じ番号→次の番号の優先順位なので注意。 パラメーターでの代入 パラメーターの読み込みは基本ステートコントローラーの処理が行われる場合。 またステートコントローラーで使用するパラメーターしか読み込まない 例としてはCommonステートページに書いたAI用の空中ジャンプ制御記述の一部。 ■AI側の記述[State -1, AI Air Jump]Type = ChangeStateValue = 45 + ( Var(*AirJump用Var*) = (1+Var(*AirJump用Var*)) )*0;ジャンプ回数を加算TriggerAll = Var(*AIフラグ*) ;AIフラグありTriggerAll = StateType = A Ctrl Pos Y -1*Const(Movement.AirJump.Height);前提条件TriggerAll =(Var(*AirJump用Var*) 1073741823) *AirJump.Num* ;ジャンプ回数制限Trigger1 = **** ;AI用の条件 処理が実行される場合にVar(*AirJump用Var*)に+1加算して代入を行うという記述 パラメーターは処理が実行されない場合は基本的に読み込みは行われない。 なおパラメーターによっては読み込み回数が増えるという話もあるので処理には要注意。 ちなみに条件式内で「 =」代入を行いパラメーターで指定すれば 計算したVarの数値をすぐパラメーターで使うことも可能。 複合Varset記述の例 記述の一例。 Var(0),Var(1),Var(2)をTempVarとして使用。 [State -1]type = varsetvar(0) = 1TriggerAll = 1 || var(0) = 0 ;tempリセットTriggerAll = 1 || var(1) = 0TriggerAll = 1 || var(2) = 0triggerall = StateType!=LTrigger1 = command = "b"Trigger1 = 1 || var(1) = 55Trigger2 = command = "a"Trigger2 = 1 || var(1) = 50Trigger3 = command = "y"Trigger3 = 1 || var(1) = 5Trigger4 = command = "x"Trigger4 = 1 || var(1) = 0ignorehitpause = 1[State -1]type = nulltriggerall = StateType!=LTriggerall = 1 || var(1) = var(1) + (StateType=A)*400 ;空中時600系にTriggerAll = 1 || var(2) = 2 ;Trigger1 = Command = "holddown" ;屈みTrigger1 = 1 || var(1) = var(1) + 200*(StateType!=A) + 30*(StateType=A) ;空中時+30 地上時400系Trigger1 = 1 || var(2) = ifelse(statetype!=A,1,4) ;空中ならLv4Trigger2 = Command = "holdfwd" ;前Trigger2 = 1 || var(1) = var(1) + 20 ;20系Trigger2 = 1 || var(2) = ifelse(statetype!=A,4,3) ;空中ならLv3Trigger3 = Command = "holdback";後ろTrigger3 = 1 || var(1) = var(1) + 10*(Statetype!=A) ;610系は無いのでTrigger3 = 1 || var(2) = 3 ; 「 =」による代入の応用に慣れるとこんな記述も可能になる。 前半 Varsetまず全てのVarを0にする 倒れ状態でない場合のみ下を処理する。 コマンドでbが押されたら55、aなら50、yなら5、xなら0の数値をvar(1)へ代入する。 「baxy」のいずれかが押されていたらvar(0)に1を代入。 後半 Null倒れ状態出ないことを確認する var(1)を空中の場合+400加算する。またvar(2)へ2を代入する。 方向キー下で、var(1)を空中でないなら+200、空中なら+30する。さらにvar(2)を空中でないなら1、空中なら4にし、読み込みを終了させる。 ↑で読み込み終了せず、方向キー前ならVar(1)に+20する。さらにvar(2)を空中でないなら4、空中なら3にし、読み込みを終了させる。 ↑で読み込み修旅せず、方向キー後ろならvar(2)を3にするさらにvar(1)を空中でない場合は+10する。 ちなみにこのvar(1)の数値は+200してステート移動の指定番号に使われる。 これにより「28個の技への移動」を移動含め3つのステートコントローラーで制御している。 (とはいえ、普通のキャラに使う記述ではないのは確か。おとなしくステコンを並べよう。)